return function(_) {
  _.add_events_to_class = function(c) {
    if (typeof(c) !== 'function') {
      throw 'This is no class: ' + c
    }
    var _events = {};
    // Events
    c.prototype.register = function(name, callback) {
      if (!(name in _events)) {
        _events[name] = [];
      }
      _events[name].push(callback);
    };
    c.prototype.notify = function(name) {
      if (!_events[name]) return;

      args = slice(arguments);
      args.shift();  // name
      for(var i = 0, len = _events[name].length; i < len; i++) {
        _events[name][i].apply(this, args);
      }
    };
  }
}